package com.canaan.business.service.bill;

import java.util.List;

import com.canaan.business.domain.bill.AdjustOutBill;
import com.canaan.business.domain.bill.ModulationOutBill;
import com.canaan.business.domain.vo.ModulationOutBillForPrintVo;

/**
 * 出库调整单Service接口
 *
 * @author canaan
 * @date 2025-03-24
 */
public interface IModulationOutBillService {
    /**
     * 查询出库调整单
     *
     * @param id 出库调整单主键
     * @return 出库调整单
     */
    ModulationOutBill selectModulationOutBillById(Long id);

    /**
     * 查询出库调整单列表
     *
     * @param modulationOutBill 出库调整单
     * @return 出库调整单集合
     */
    List<ModulationOutBill> selectModulationOutBillList(ModulationOutBill modulationOutBill);

    /**
     * 新增出库调整单
     *
     * @param modulationOutBill 出库调整单
     * @return 结果
     */
    int insertModulationOutBill(ModulationOutBill modulationOutBill);

    /**
     * 批量新增出库调整单
     *
     * @param modulationOutBillList 出库调整单列表
     * @return 结果
     */
    int batchInsertModulationOutBill(List<ModulationOutBill> modulationOutBillList);

    /**
     * 修改出库调整单
     *
     * @param modulationOutBill 出库调整单
     * @return 结果
     */
    int updateModulationOutBill(ModulationOutBill modulationOutBill);

    /**
     * 批量修改出库调整单
     *
     * @param modulationOutBillList 出库调整单列表
     * @return 结果
     */
    int batchUpdateModulationOutBill(List<ModulationOutBill> modulationOutBillList);

    /**
     * 批量删除出库调整单
     *
     * @param ids 需要删除的出库调整单主键集合
     * @return 结果
     */
    int deleteModulationOutBillByIds(Long[] ids);

    /**
     * 删除出库调整单信息
     *
     * @param id 出库调整单主键
     * @return 结果
     */
    int deleteModulationOutBillById(Long id);

    /**
     * 查询调拔出库单
     *
     * @param no 编号
     * @return 调拔出库单
     */
    ModulationOutBill selectModulationOutBillByNo(String no);

    /**
     * 打印调整出库单
     * @param no
     * @return
     */
    ModulationOutBillForPrintVo selectModulationOutBillForPrint(String no);

}
